#include <iostream>
#include <vector>
#include <string>

using namespace std;

bool inArea(vector<string> &data, int i, int j)
{
  return i <= data.size() && i >= 0 && j <= data[0].size() && j >= 0;
}

void dfs(vector<string> &data, int i, int j)
{
  // base case
  if (!inArea(data, i, j))
  {
    return;
  }

  if (data[i][j] == 'H')
    return;

  data[i][j] = 'H'; // 表明遍历过

  dfs(data, i - 1, j);
  dfs(data, i + 1, j);
  dfs(data, i, j - 1);
  dfs(data, i, j + 1);
}

int main()
{
  int m, n;
  cin >> m;
  getchar(); // ','逗号
  cin >> n;
  string str;
  vector<string> data;
  int t = m;
  while (t-- && cin >> str)
  {
    data.push_back(str);
  }
  int res = 0;
  for (int i = 0; i < m; i++)
  {
    for (int j = 0; j < n; j++)
    {
      if (data[i][j] == 'S')
      {
        dfs(data, i, j);
        ++res;
      }
    }
  }
  cout << res;
  return 0;
}